Exemple de carte de France

Population française en 2016 par grande région
# Importation des packages utiles
library('rgdal')      # Lire et reprojeter les cartes
library('plotrix')    # Créer des échelles de couleurs
library('classInt')   # Affecter ces couleurs aux données

# Importation des fichiers shapefile
regions_avant <- readOGR(dsn="C:/Users/MlleBerthe/Documents/ANTSA/1 COURS/MSS/M2 MSS/Big Data/Open data/contours-des-regions-francaises-sur-openstreetmap", layer="contours-des-regions-francaises-sur-openstreetmap")
regions <- readOGR(dsn="C:/Users/MlleBerthe/Documents/ANTSA/1 COURS/MSS/M2 MSS/Big Data/Open data/nouvelles_regions", layer="nouvelles_regions")

# Lecture des limites départementales pour sélectionner les frontières
frontieres <- readOGR(dsn="C:/Users/MlleBerthe/Documents/ANTSA/1 COURS/MSS/M2 MSS/Big Data/Open data/GEOFLA_2-2_DEPARTEMENT_SHP_LAMB93_FXX_2016-06-28/GEOFLA/1_DONNEES_LIVRAISON_2016-06-00235/GEOFLA_2-2_SHP_LAMB93_FR-ED161/DEPARTEMENT",  layer="LIMITE_DEPARTEMENT")
frontieres <- frontieres[frontieres$NATURE %in% c('Frontière internationale','Limite côtière'),]

# Lecture des pays et sélection de l'Europe
europe <- readOGR(dsn="C:/Users/MlleBerthe/Documents/ANTSA/1 COURS/MSS/M2 MSS/Big Data/Open data/ne_10m_admin_0_countries", layer="ne_10m_admin_0_countries")
europe <- europe[europe$REGION_UN=="Europe",]

# On sélectionne uniquement la France métropolitaine
regions_avant <- regions_avant[regions_avant$nom!="La Réunion",]
regions_avant <- regions_avant[regions_avant$nom!="Guyane",]
regions_avant <- regions_avant[regions_avant$nom!="Mayotte",]
regions_avant <- regions_avant[regions_avant$nom!="Guadeloupe",]
regions_avant <- regions_avant[regions_avant$nom!="Martinique",]

# Projection en Lambert 93
europe <- spTransform(europe, CRS("+init=epsg:2154"))
regions_avant <- spTransform(regions_avant, CRS("+init=epsg:2154"))

Mise en forme des données à dessiner : il faut fusionner le tableau de données que l’on veut représenter avec le fichier shapefile que l’on veut colorer (les régions dans le cas ci-présent).

# On importe le tableau que nous avons créé au préalable
data_demandeurs_pop <- read.csv("a.csv")

# On retire la population totale
data_demandeurs_pop <- data_demandeurs_pop[-6,]
# Création de la variable "code_supra" qui sera la variable sur laquelle on effectuera le merge
data_demandeurs_pop$code_supra <- c("82","26","53","24","94","31","22","11","23","72","74","52","93")
# On fusionne les données
regions <- merge(regions, data_demandeurs_pop, by.y='code_supra')

On crée la carte de la France

# Carte de la population
# On colorie la carte
col_pop <- findColours(classIntervals(
  regions@data$population, 5, style="quantile"),
  smoothColors("#d0db34",5,"#4aaa2f"))
# On ajoute une légende
leg_pop <- findColours(classIntervals(
  regions@data$population, 5, style="quantile"),
  smoothColors("#d0db34",5,"#4aaa2f"),
  under="moins de", over="plus de", between="–",
  cutlabels=FALSE)

# On dessine la carte  
plot(frontieres,  col="#FFFFFF")  # Premier plot
plot(europe,  col="#E6E6E6", border="#AAAAAA",lwd=1, add=TRUE) # On dessine l'Europe
plot(frontieres,  col="#D8D6D4", lwd=6, add=TRUE) # On rajoute la frontière de la France
plot(regions,col=col_pop, border="#CCCCCC",lwd=.7, add=TRUE) # Les nouvelles régions colorées
plot(regions_avant, border="#CCCCCC", lwd=.3, add=TRUE) # Frontières des anciennes régions
plot(regions,border="#FFFFFF",lwd=2, add=TRUE) # Frontières des nouvelles régions en gras

# Légende de la carte
legend("topleft",fill=attr(leg_pop, "palette"),
       legend=names(attr(leg_pop,"table")), cex = 0.45, pt.cex = 1,
       title = "Population")
title("Population française en 2016\n par grande région")